package com.zwj.interview.数组.差分数组;

/**
 * @Author: Zwj
 * @Date: 2022/9/15 15:24
 * 力扣
 *
 * 这里有 n 个航班，它们分别从 1 到 n 进行编号。
 *
 * 有一份航班预订表 bookings ，表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti （包含 firsti 和 lasti ）的 每个航班 上预订了 seatsi 个座位。
 *
 * 请你返回一个长度为 n 的数组 answer，里面的元素是每个航班预定的座位总数。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/corporate-flight-bookings
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class 航班预定统计 {

    /**
     * 该题本质也是一道差分数组的题目：
     * 给你输入一个长度为 n 的数组 nums，其中所有元素都是 0。再给你输入一个 bookings，
     * 里面是若干三元组 (i, j,k)，每个三元组的含义就是要求你给 nums 数组的闭区间 [i-1,j-1] 中所有元素都加上 k。
     * 请你返回最后的 nums 数组是多少？
     *
     * 只是它说的是n个航班从1开始开始，数组下标从0开始，所以对于输入的三元组 (i, j,k)，数组区间应该对应 [i-1,j-1]
     */
    public int[] corpFlightBookings(int[][] bookings, int n) {
       int[] nums=new int[n];
       Difference df=new Difference(nums);
       for(int[] booking:bookings){
           df.increment(booking[0]-1,booking[1]-1,booking[2]);
       }
       return df.result();
    }


}